Methods for error detection and correction were initially developed for transmitting information reliably over noisy channels. However, error detection and correction has also found applications to computer technology because the transmission of information bits via a bus, or the storage and retrieval of information bits from memory, are formally similar to the communication of information over a noisy channel.
The theory of error correction borrows heavily from algebra, specifically the theory of Galois fields. The search for good codes with efficient decoding techniques has been facilitated by restricting them to being linear, and often involves restricting the codes to those with certain desirable algebraic properties. However, the search for good codes suitable for specific processing requirements dictated by computer hardware can be a difficult task, and is not always necessarily made easier by borrowing from algebraic coding theory or by relying upon the work of previous coding theorists who have directed their research to the communication of information over noisy channels.
Specifically, in retrieving stored information from memory, there may be a fault in a wire making up part of a bus. If data is time-multiplexed, then a single wire fault may result in multiple errors with specific spatial correlation. For example, if a 64 bit word is multiplexed over 4 wires, then a fault in one wire will cause errors separated by multiples of4.
Codes capable of detecting or correcting multiple errors have been previously designed, but they are designed for random errors or burst errors. In the former case, such codes are too costly in terms of circuit area or latency, and in the latter case they are not applicable to the problem of detecting a wire fault on a bus with time-multiplexed data. It is therefore desirable for a method of error detection to detect multiple errors which are due to a single wire fault in a time-multiplexed system, and which consumes relatively little circuit area with relatively small latency in its implementation.